/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package br.com.foxinline.servico;

import br.com.foxinline.modelo.Curso;
import java.util.List;
import javax.ejb.Stateless;
import javax.persistence.Query;

/**
 *
 * @author laverson
 */
@Stateless
public class CursoServico extends ServicoGenerico<Curso> {

    public CursoServico() {
        super(Curso.class);
    }

    public void salvarTodos(List<Curso> cursos) {
        for (Curso curso : cursos) {
            salvar(curso);
        }
    }

    public List<Curso> pesquisar(Curso entity) {

        String sql = "Select c from Curso c where ";

        if (entity.getCodigo() != null && !entity.getCodigo().equals("")) {
            sql += " lower(c.codigo) like lower(:codigo) AND ";
        }
        if (entity.getNome() != null && !entity.getNome().equals("")) {
            sql += " lower(c.nome) like lower(:nome) AND ";
        }

        sql += " 1=1 ";

        Query query = getEntityManager().createQuery(sql);

        if (entity.getCodigo() != null && !entity.getCodigo().equals("")) {
            query.setParameter("codigo", "%" + entity.getCodigo().replace(" ", "%") + "%");
        }
        if (entity.getNome() != null && !entity.getNome().equals("")) {
            query.setParameter("nome", "%" + entity.getNome().replace(" ", "%") + "%");
        }

        return query.getResultList();
    }
    
    public boolean verificarDuplicidade(Curso curso){
        
        String sql = "SELECT c FROM Curso c ";
        
        if (curso != null) {
            sql += "where ";
            if (curso.getCodigo() != null && !curso.getCodigo().equals("")) {
                sql += "LOWER(c.codigo) LIKE LOWER(:codigo) AND ";
            }
            if (curso.getNome() != null && !curso.getNome().equals("")) {
                sql += "LOWER(c.nome) LIKE LOWER(:nome) ";
            }
        }
        
        Query query  = getEntityManager().createQuery(sql);
        
        if (curso != null) {
            if (curso.getCodigo() != null && !curso.getCodigo().equals("")) {
                query.setParameter("codigo", "%"+curso.getCodigo().replace(" ", "%") +"%");
            }
            if (curso.getNome() != null && !curso.getNome().equals("")) {
                query.setParameter("nome", "%"+curso.getNome().replace(" ", "%") +"%");
            }
        }
        
        return query.getResultList().isEmpty();
    }
}
